The present invention relates to a multiple processor computer system, and more particularly to a method and apparatus for controlling data transfers into and out of an input/output processor that is shared by a number of other processors and controllers in a computer system.
Typically, a multiple processor computer system has multiple central processing units (CPUs) and one or more controllers, such as a direct memory access controller. Additionally, a multiple processor computer system has certain assets that are shared by the CPUs and controllers. System buses, main memories and input/output channels are some examples of such shared assets.
Shared assets are typically shared for two reasons: to provide access to shared data, and to reduce cost by time sharing an asset among the CPUs instead of providing each of the multiple CPUs with its own respective asset. A very common problem with shared assets within a system, is how the use of a shared asset is allocated among the CPUs and controllers that want to access the shared asset. Unstructured allocation of a shared asset typically results in domination by one processor to the detriment of the other processors that need the shared asset. Structured allocation of a shared asset prevents domination of a shared process by one processor to the detriment of competing processors and controllers. Structured allocation schemes called arbitration methods are well known and widely used; however, each of the known arbitration methods has some type of limitation that reduces throughput of data to and from a shared asset.
A very simple arbitration method is to assign each processor and each controller a unique priority level. When a shared asset is available, the shared asset is allocated to the processor or controller with the highest priority level that is awaiting that asset. The problem with this type of arbitration method is that in busy systems the lowest priority processor or controller is "starved out" because it never makes it to that "highest priority level awaiting" that is allocated to the shared asset.
Another simple arbitration method is the timed loop arbitration method in which each processor or controller is automatically allocated a period of time of the shared resource whether it needs it or not. This removes the "starve out" problem. This arbitration method, however, has a problem of data latency, that is there can be a long wait between allocated periods and the data awaiting to be transferred may be no longer valid.
In view of the limitations of the known arbitration methods, it is an object of the present invention to provide an arbitration method that does not starve any processor or controller out and has a low data latency time.
It is another object of the present invention to provide an arbitration method that may be dynamically adjusted to improve the data flow to and from a shared asset.